1. Technical Field
Specific matter disclosed herein relates to the field of managed runtime environments (MRTE).
2. Background Information and Description of Related Art
Of particular relevance to embodiments of the present invention is RDMA over IP technology. RDMA (“Remote Direct Memory Access”) technology or environments, among other things, may use a NAC (Network Accelerator Card) to connect IP storage to networks and servers. RDMA products, e.g, RDMA programs and processes or “remote direct memory processes/programs”, aim to help IT users decrease network latency and administration costs by supporting a zero copy model for incoming data to minimize the demands on host memory bandwidth associated with high speed networking. In other words, RDMA enables the reduction of data copy operations that are found in communication programs such as TCP/IP (Transmission Control Protocol/Internet Protocol). TCP/IP is understood to be one of the basic communication languages or protocols of the Internet.
This demand reduction leads to RDMA protocol being used to reduce demands on both CPUs (Central Processing Units) and memory resources because, first, much of the overhead of protocol processing may be moved to an Ethernet adapter and, second, each incoming network packet has enough information to allow it to be placed directly into final destination memory. These advantages of RDMA are particularly useful as companies develop, for example, 10 Gigabit Ethernet products.
RDMA is a technology that may be used in numerous types of digital products. For example, RDMA may be used with NICs (Network Interface Controllers), Embedded Transport Acceleration (ETA), Managed Runtime Environments (MRTEs), Direct Data Placement (DDP), Network Interface Adapter Drivers, APIs (Application Program Interfaces), Application Memory Buffers, Infiniband, etc. RDMA is also sometimes referred to herein as RDMAP, meaning, “RDMA Protocol.”
An MRTE is a programming environment which typically provides ULP (described later herein) services for RDMA processes. The MRTE provides code libraries with rich functionality and several core components which free up the developer to concentrate their efforts on system solution requirements. MRTE programming environments provide for automatically managing many computing aspects, such as memory management and dynamic compilation, some of which were the burden of the application developer years ago. An MRTE is an intermediary programming environment that communicatively couples to the OS to consume computing resources such as CPU processing and system memory. In other words, the MRTE may be considered to be an entity that is located above, or “on top” of an operating system (OS) and processes information through the CPU that is hosting the OS, i.e., the MRTE consumes CPU resources, such as memory allocations, to operate.
The RDMAP specification defines a ULP as follows:                ULP—Upper Layer Protocol: The process layer above the RDMAP process layer (RDMA/DDP). The ULP for RDMA/DDP is expected to be something like an OS (Operating System), Application, adaptation layer, or proprietary device. The RDMA/DDP documents do not specify a ULP—they provide a set of semantics that allow a ULP to be designed to utilize RDMA/DDP.        
Typically, RDMA implements the MRTE in this ULP role and the RDMA asserts that there must be a means for the MRTE ULP to interact with an RDMA process. An RDMA process may execute an MRTE as the ULP. This involves following the RDMAP interactions with the ULP criteria mapped out by the RDMAP specification while preserving the expected behaviors of the given MRTE with respect to JIT processing, class loading, garbage collection, or network I/O.
JIT processing may be understood with reference to Java programming language. In the Java programming language and environment, a “just-in-time” (JIT) compiler is a program that turns Java bytecode (a program that contains instructions that must be interpreted) into instructions that can be sent directly to the processor.
“Class loading” may be understood to be the process in which an application's class is assembled during runtime (either from cache or by JIT compiling it) and loads the class' methods, interfaces, and variables into memory.
“Garbage collection” may refer to a memory manager which monitors memory usage and frees up memory which will most likely not be referenced by a running program again and then organizes free memory to allow for the largest contiguous buffer which can be used by the running program.
By “network I/O” is meant network data transmissions to and from a network device (defined later herein), often via a communications protocol such as TCP/IP.
RDMAP is designed to simplify application development. Section 5.2 “RDMAP Interactions with the ULP” of the RDMA Protocol Specification, 21 Oct. 2002 describes the interactions between the RDMAP and the ULP.
Relevant to the present disclosure is a TCP Offload Engine (TOE, not shown). A TOE is a specialized (intelligent) network adapter that moves much of the TCP/IP protocol processing overhead from the host CPU/OS to the network adapter. While TOEs can reduce much of the TCP/IP protocol processing burden from the main CPU, it does not directly support zero copy of incoming data streams. RDMA directly supports a zero copy model for incoming data to minimize the demands on host memory bandwidth associated with high-speed networking.